Distribution of audio-video data may be implemented from a content server to remote client devices over computer networks, telecommunications networks, and combinations of such networks using various methods, for example progressive downloading or streaming.
In streaming, a server streams audio-video data continuously to a media player component operating at least partly on the client device, which may play the audio-video data concurrently with receiving the streaming data from the server. The media player component may initiate play of the video data immediately after receiving an initial portion of the data from the content provider. Unlike progressive downloading, streaming media can be delivered on-demand or live. Progressive download may require downloading the entire file or downloading enough of the entire file to start playback at the beginning, whereas streaming may enable nearly immediate playback at any point within the file. End-users may skip through the media file to start playback or change playback to any point in the media file. Hence, the end-user does not need to wait for the file to progressively download. Typically, streaming media is delivered from a few dedicated servers having high bandwidth capabilities.
A streaming media server may include a specialized device that accepts requests for video files, and with information about the format, bandwidth and structure of those files, delivers just the amount of data necessary to play the video, at the rate needed to play it. Streaming media servers may also account for the transmission bandwidth and capabilities of the media player on the destination client. A streaming media server may communicate with the client device using control messages and data messages to adjust to changing network conditions as the video is played. These control messages can include commands for enabling control functions such as fast forward, fast reverse, pausing, or seeking to a particular part of the file at the client. Since a streaming media server transmits video data only as needed and at the rate that is needed, precise control over the number of streams served can be maintained. Unlike the case with progressive downloading, the viewer will not be able to view high data rate videos over a lower data rate transmission medium. However, streaming media servers (1) provide users random access to the video file, (2) allow monitoring of who is viewing what video programs and how long they are watched, (3) use transmission bandwidth more efficiently, since only the amount of data required to support the viewing experience is transmitted, and (4) allow more control over the content, because the streaming video data is discarded by the media player after use.
Streaming media servers may use HTTP and TCP to deliver video streams, but generally use RSTP (real time streaming protocol) and UDP (user datagram protocol). These protocols permit control messages and save bandwidth by reducing overhead. Unlike TCP, when data is dropped during transmission, UDP does not transmit resent requests. Instead, the server continues to send data. Streaming media servers can also deliver live webcasts and can multicast, which allows more than one client to tune into a single stream, thus saving bandwidth.
Typically, progressively downloaded media is transmitted to the user device at a rate that is faster than playback. The media program player buffers this data, and may indicate how much of the media program has been buffered by providing an indicator, usually as a part of a “progress bar.” A control is often provided that allows the user to go to any point in the program that has already been buffered by selecting the control and moving it to a different location along the progress bar. This allows the user to randomly access any buffered portion of the media program. Streaming media players do not rely on buffering to provide random access to any point in the media program. Instead, this is accomplished through the use of control messages transmitted from the media player to the streaming media server.
Technologies such as streaming video or progressive downloading may enable a very large and diverse catalog of video content to be made available to the user for immediate viewing. One of the challenges to the end user in receiving access to such a broad array of video content may include finding programs of interest from among the many programs available. Interfaces may be provided that place video content into different categories that can be searched by the user. However, such interfaces are only useful if the user already has an idea about what kind of content they are interested in. Offbeat, unusual, or difficult to categorize media programs, for example, would be difficult to find with such interfaces.
Automatic content selection or recommendation may be used to find programs likely to be of interest to particular users, but such methods may be subject to certain limitations. Certain methods may require information about the user or the user's interests, for example past viewing history or user profile information, for use in selecting content or making content recommendations. Consequently, such methods may require that the user connecting to a content distribution system be identified for the method to be useful. However, a significant portion of people viewing video content online may not wish to be identified. Requiring all users to identify themselves before gaining access to online content may be counter-productive to the objective of obtaining the largest possible audience for promotion of advertising or other content. Therefore, some prior methods for automatic content selection or recommendation may not be effective in environments where the identities of a substantial portion of users are unknown, for example, when a user is not logged in or otherwise identified. These and other limitations of prior automatic content selection or recommendation methods may be overcome by the novel methods and apparatus disclosed herein.